package com.jishuo.nontax.bfc.dao;

import com.jishuo.nontax.bean.bank.Bank;
import com.jishuo.nontax.bean.vo.BankVO;
import com.jishuo.nontax.bean.vo.QueryBankDateVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.List;

/**
 * @author hlp
 * @date 2023/2/2 09:39
 * @Description:
 */
@Mapper
public interface BankMapper {

    List<BankVO> bankclasFindBankVo(String bankcls);

    List<BankVO> canOneTwoBankVo(String bankcls,String cantonidOne,String cantonidTwo);

    int selectBankCount(@Param("bankid") Long bankid, @Param("cantonid") String cantonid);

    Long findBankId(String accountcode);

    /** 查询账户列表，根据区划 */
    List<BankVO> findBankView(@Param("bankcls") String bankcls, @Param("cantonid") Long cantonid);

    /** 查询账户列表，根据用户管理bankid */
    List<BankVO> findUserBankView(@Param("bankcls") String bankcls, @Param("bankids") String bankid);

    BankVO findBankAndCan(@Param("accountcode") String accountcode, @Param("bankid") Long bankid);

    ArrayList<Bank> findBank(@Param("bankcls") String bankcls, @Param("cantonid") Long cantonid);

    List<BankVO> findBankVoView(@Param("bankcls") String bankcls, @Param("cantonid") Long cantonid);

    ArrayList<BankVO> findBankByBankid(Long bankid);

    Bank findBankByBankidIsenable(Long bankid);

    /**
     * 根据id查询账户
     * @param bankid 账户id
     * @return
     */
    BankVO getBankVo(Long bankid);

    ArrayList<Bank> selBank(@Param("bankcls") String bankcls, @Param("cantonid") Long cantonid, @Param("accountcode") String accountcode);

    /** 接收财政消息更新 */
    int updateBank(BankVO bank);

    /** 核查回执时更新 */
    int setBank(BankVO bank);

    /** 更新state */
    int updateBankState(BankVO bank);

    /** 接收财政消息，删除（isenble=0） */
    int deleteBank(BankVO bank);
    /**
     * 根据账号查询账户
     * @param accountcode 账号
     * @return
     */
    BankVO findBankVO(String accountcode);

    /**
     * 根据账户查询账户名称
     *
     * @param accountcode 账户
     * @return
     */
    String findAccountNameByAccountCode(String accountcode);

    int saveBankHis(BankVO bankVO);

    int saveBank(BankVO bankVO);

    int deleteBankId(Long bankid);

    int deleteAccountCode(String accountcode);

    List<BankVO> findBankBystate(@Param("bankcls") String bankcls, @Param("cantonid") Long cantonid, @Param("bankids") long[] bankids);

    List<BankVO> queryBank(BankVO bankVO);

    List<QueryBankDateVO> querybankfordate(@Param("bankid") Long bankid, @Param("paybankdt") String paybankdt);

    List<BankVO> findBankVoDz(String bankcls);

    BankVO selectBankById(@Param("id") int bankId);
}
